import { create } from 'zustand';
import { getDeviceInfo } from '../utils/model';

interface Store {
  info: any | null;
  setInfo: (obj: any) => void;

  isLooping: boolean;
  intervalId: NodeJS.Timeout | null;
  apiData: any; // 根据API返回的数据结构定义更具体的类型
  error: string | null;
  startLoop: () => void;
  stopLoop: () => void;
}

const useStore = create<Store>((set, get) => ({
  // 设备信息
  info: {
    switch: 0, // 开关：0-待机 1-启动
    mode: 0, // 模式: 0-自定义 1-鸡翅 2-鸡腿 3-红薯 4-蛋 5-大虾 6-鱼 7-牛排 8-蛋糕 9-薯条
    temperature: 0, // 温度
    time: 0, // 烹饪时间
    state: 0, // 设备状态 0-待机 1-运行中 2-睡眠中
    prompt: 0, // 翻面提示 0-无 1-弹窗提示 
    fault: 0, // 故障 0-正常  1-5 故障
    isOnline: true// false=离线 true=在线
  },
  setInfo: info => set({ info }),

  // 处理循环
  isLooping: false,
  intervalId: null,
  apiData: null,
  error: null,
  startLoop: () => {
    if (get().isLooping) return; // 防止重复启动

    set({ isLooping: true });

    const fetchApi = async () => {
      try {
        getDeviceInfo();
      } catch (error: any) {
        set({ error: error });
        console.error('API Error:', error);
      }
    };

    fetchApi(); // 立即执行一次
    const id = setInterval(fetchApi, 2000); // 每5秒调用一次

    set({ intervalId: id });
  },
  stopLoop: () => {
    const id = get().intervalId;
    if (id) {
      clearInterval(id);
      set({ intervalId: null });
    }
    set({ isLooping: false });
  }
}));

export default useStore;
